一 . 概述

DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种很典型的密度聚类算法,和K-Means,BIRCH这些一般只适用于凸样本集的聚类相比,DBSCAN既可以适用于凸样本集,也可以适用于非凸样本集。

二 . 算法过程

  1. 随机找一个点看它周围是否存在其他点(距离由 epsilon)控制, 数量由(minPts)控制。
  2. 如果周围没有任何其他点,则标注为噪音
  3. 如果周围有足够数量(minPts)的点,则标注为核心点
  4. 被核心点辐射且本身不是核心的点为边界点

三 . 优缺点

1. 优点

  1. 不需要指明类的数量
  2. 灵活的分离各种形状和大小的类
  3. 能强力的处理噪音和离群值

2. 缺点

  1. 不同密度的类,分类比较困难(HDBSCAN可解决)

四 . sklearn 示例

1
2
3
4
5
6
7
8
from sklearn import datasets, cluster

x = datasets.load_iris().data

dbscan = cluster.DBSCAN(eps=0.5, min_samples=5)

dbscan.fit(x)
dbscan.labels_